import { Injectable, resolveForwardRef, Type } from '@angular/core';

import { Observable, observable } from 'rxjs';

import { HttpClient, HttpHeaders } from '@angular/common/http';

@Injectable({
  providedIn: 'root',
})
export class RequestService {
  constructor(public http: HttpClient) {}

  public datas: any = '';      // 请求到的数据
  public api = 'http://api-waimai.3-gd.com/';
  // get请求数据
  getData(url: string): Observable<any> {
    return this.http.get(this.api + url);
  }

  // post请求

  postData(url: string, params: any): Observable<any>{
    const httpOptions = {headers: new HttpHeaders({'Content-Type': 'application/json'})};
    return this.http.post(this.api + url, params, httpOptions);
  }

}

// export class RequestService {
//  constructor() {}

// // 1.同步的方法
// getData(): any {
//   console.log('getData()方法被调用');
// }

// // 异步调用（模拟）
// // 2.callback
// getCalbackData(cb): any {
//   setTimeout(() => {
//     const name = '张三';
//     cb(name);
//   }, 1000);
//   // return name;
// }

// // 3.promise
// getPromiseData(): any {
//   return new Promise((res, rej) => {
//     setTimeout(() => {
//       const name1 = '张三-promise';
//       res(name1);
//     }, 1000);
//   });
// }

// // 4.rxjs
// getRxjsData(): any{
//   // tslint:disable-next-line: no-shadowed-variable
//   return new Observable(( observable: any ) => {

//     setTimeout(() => {
//       const name2 = '张三-rxjs';
//       observable.next(name2);
//       // observable.error('数据');
//     }, 2000);

//   });
// }

// // 5.rxjs:每个1秒获取一次
// getStreamData(): any{
//   return new Observable<number>((observable1) => {
//     let count = 0;
//     setInterval(() => {
//       observable1.next(count++);
//     }, 1000);
//   });
// }

// }
